
//随机生成颜色
export function coloring() {
  return '#' + (Math.floor(Math.random() * 0xffffff).toString(16).padStart(6, '0'))
}


export function getUrl(url) {
  let returl = new Object();
  if (url.indexOf("?") != -1) {
    let queryString = url.substr(1);
    let queryParams = queryString.split("&");
    for (let i = 0; i < queryParams.length; i++) {
      let [key, value] = queryParams[i].split("=");
      returl[key] = decodeURI(value);
      //值需要使用 decodeURI() 函数对通过 escape() 或 url 编码过的字符串进行解码
    }
  };
  return returl;
}

/**
 * 经纬度坐标转墨卡托坐标
 * @param {经度(角度值)} longitude 
 * @param {维度(角度值)} latitude
 */
// 墨卡托坐标系：展开地球，赤道作为x轴，向东为x轴正方，本初子午线作为y轴，向北为y轴正方向。
// 数字20037508.34是地球赤道周长的一半：地球半径6378137米，赤道周长2*PI*r = 2 * 20037508.3427892，墨卡托坐标x轴区间[-20037508.3427892,20037508.3427892]
export function lon2xy(longitude, latitude) {
  var E = longitude;
  var N = latitude;
  var x = E * 20037508.34 / 180;
  var y = Math.log(Math.tan((90 + N) * Math.PI / 360)) / (Math.PI / 180);
  y = y * 20037508.34 / 180;
  return {
    x: x, //墨卡托x坐标——对应经度
    y: y, //墨卡托y坐标——对应维度
  }
}

export function toMercator(longitude, latitude) {//[114.32894, 30.585748]
  var mercator = {};
  var earthRad = 6378137.0;
  // console.log("mercator-poi",poi);
  mercator.x = longitude * Math.PI / 180 * earthRad;
  var a = latitude * Math.PI / 180;
  mercator.y = earthRad / 2 * Math.log((1.0 + Math.sin(a)) / (1.0 - Math.sin(a)));
  // console.log("mercator",mercator);
  return mercator; //[12727039.383734727, 3579066.6894065146]
}

// 方法定义 lat,lng 
// export function GetDistance(lat1, lng1, lat2, lng2) {
//   var radLat1 = lat1 * Math.PI / 180.0;
//   var radLat2 = lat2 * Math.PI / 180.0;
//   var a = radLat1 - radLat2;
//   var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
//   var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
//     Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
//   s = s * 6378.137;// EARTH_RADIUS;
//   s = Math.round(s * 10000) / 10000;
//   return s;
// }
// 调用 return的距离单位为km
// GetDistance(10.0,113.0,12.0,114.0)


export function GetDistance(lat1, lng1, lat2, lng2) {
  var PI = 3.1415926;
  var EarthRadius = 6378137;
  var Rad = PI / 180.0;
  var radlat1 = lat1 * Rad;
  var radlat2 = lat2 * Rad;
  var a = radlat1 - radlat2;
  var b = (lng1 - lng2) * Rad;
  var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.pow(Math.sin(b / 2), 2)));
  s = s * EarthRadius;
  s = Math.round(s * 100) / 100;
  return s;
}
